package com.ts.base.config;

import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;


@Configuration  //配置类注解 //Spring的配置文件注解
@EnableSwagger2
public class Swagger2Config {
//    @Bean  //添加Bean注解是@Bean：Spring的@Bean注解用于告诉方法，产生一个Bean对象，然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次，随后这个Spring将会将这个Bean对象放在自己的IOC容器中；
//    public Docket adminapiConfig()   //Docket 是swagger的文件对象
//    {
//
//
//        return new Docket(DocumentationType.SWAGGER_2)
//                .groupName("adminApi")
//                .apiInfo(adminApiInfo())
//                .select()         //添加过滤器根据url路径的不同将其分配到不同的swagger的分组当中
//                .paths(Predicates.and(PathSelectors.regex("/admin/.*")))
//                .build();
//    }
//
//
//    private ApiInfo adminApiInfo(){
//
//        return  new ApiInfoBuilder()
//                .title("尚融宝后台管理系统API文档")
//                .description("本文描述了尚融宝后台管理系统的各个模块的接口的调用方式")
//                .version("1.6")
//                .contact(new Contact("金花","http","@qq.com"))
//                .build();
//    }


    @Bean
    //添加Bean注解是@Bean：Spring的@Bean注解用于告诉方法，产生一个Bean对象，然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次，随后这个Spring将会将这个Bean对象放在自己的IOC容器中；
    public Docket webapiConfig()   //Docket 是swagger的文件对象
    {


        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi")
                .apiInfo(webApiInfo())
                .select()         //添加过滤器根据url路径的不同将其分配到不同的swagger的分组当中
//                .paths(Predicates.not(PathSelectors.regex("/admin/.*")))
                .paths(Predicates.not(PathSelectors.regex("/error.*")))
                .build();
    }
    private ApiInfo webApiInfo(){

        return  new ApiInfoBuilder()
                .title("大型旅游网站API文档")
                .description("本文描述了大型旅游网站-旅小布的各个模块的接口的调用方式")
                .version("1.6")
                .contact(new Contact("金花","http","@qq.com"))
                .build();
    }
}
